home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / dev / gui / DesignerV1_55.lha / Developer / Developer.lha / HSPascal / Producer.pas
Pascal/Delphi Source File  |  1994-10-12  |  10KB  |  463 lines

  1. unit Producer;
  2.  
  3. INTERFACE
  4. uses Exec,intuition,graphics,utility,gadtools;
  5.  
  6. const
  7.   LoadError : array[0..9] of string[25] =
  8.   (
  9.   'No Error'#0,
  10.   'No FileName'#0,
  11.   'No File'#0,
  12.   'No IFF Handle'#0,
  13.   'No Memory'#0,
  14.   'Read Error'#0,
  15.   'Bad File'#0,
  16.   'Not Designer File'#0,
  17.   'File Version Too Small'#0,
  18.   'File Version Too Large'#0
  19.   );
  20.   
  21.   tagtypelong    =0;
  22.   tagtypeboolean =1;
  23.   tagtypestring  =2;
  24.   tagtypearraybyte =3;
  25.   tagtypearrayword =4;
  26.   tagtypearraylong =5;
  27.   tagtypearraystring =6;
  28.   tagtypestringlist = 7;
  29.   tagtypeuser =8;
  30.   tagtypeVisualInfo =9;
  31.   tagtypeDrawInfo =10;
  32.   tagtypeintuitext = 11;
  33.   tagtypeimage = 12;
  34.   tagtypeimagedata = 13;
  35.   tagtypeleftcoord = 14;
  36.   tagtypetopcoord = 15;
  37.   tagtypewidthcoord = 16;
  38.   tagtypeheightcoord = 17;
  39.   tagtypegadgetid = 18;
  40.   tagtypefont = 19;
  41.   tagtypescreen = 20;
  42.   tagtypeobject = 21;
  43.   tagtypeuser2 = 22;
  44.   
  45.   mybool_kind = 227;
  46.   myobject_kind = 198;
  47.   
  48. type
  49.   
  50.   plocalenode = ^tlocalenode;
  51.   tlocalenode = record
  52.     ln_Succ     : plocalenode;
  53.     ln_Pred     : plocalenode;
  54.     ln_String   : pbyte;
  55.     ln_Label    : pbyte;
  56.     ln_Comment  : pbyte;
  57.    end;
  58.   
  59.   pmytag = ^tmytag;
  60.   tmytag = record
  61.     mt_succ       : pmytag;
  62.     mt_pred       : pmytag;
  63.     mt_title      : pbyte;
  64.     mt_value      : long;
  65.     mt_buffersize : long;
  66.     mt_data       : pointer;
  67.     mt_tagtype    : word;
  68.    end;
  69.   
  70.   pstringnode = ^tstringnode;
  71.   tstringnode = record
  72.     sn_succ   : pstringnode;
  73.     sn_pred   : pstringnode;
  74.     sn_string : pbyte;
  75.    end;
  76.   
  77.   pgadgetnode = ^tgadgetnode;
  78.   tgadgetnode = record
  79.     gn_succ     : pgadgetnode;
  80.     gn_pred     : pgadgetnode;
  81.     gn_Label    : pbyte;
  82.     gn_title    : pbyte;
  83.     gn_TagList  : ptagitem;
  84.     gn_flags    : long;
  85.     gn_LeftEdge : long;
  86.     gn_TopEdge  : long;
  87.     gn_Width    : long;
  88.     gn_Height   : long;
  89.     gn_GadgetID : long;
  90.     gn_Kind     : long;
  91.     gn_Font     : ttextattr;
  92.    end;
  93.   
  94.   ptextnode = ^ttextnode;
  95.   ttextnode = record
  96.     tn_succ       : ptextnode;
  97.     tn_pred       : ptextnode;
  98.     tn_title      : pbyte;
  99.     tn_LeftEdge   : long;
  100.     tn_TopEdge    : long;
  101.     tn_Font       : ttextattr;
  102.     tn_FrontPen   : byte;
  103.     tn_BackPen    : byte;
  104.     tn_DrawMode   : byte;
  105.     tn_ScreenFont : boolean;
  106.    end;
  107.   
  108.   pbevelboxnode = ^tbevelboxnode;
  109.   tbevelboxnode = record
  110.     bb_succ      : pbevelboxnode;
  111.     bb_pred      : pbevelboxnode;
  112.     bb_LeftEdge  : long;
  113.     bb_TopEdge   : long;
  114.     bb_Width     : long;
  115.     bb_Height    : long;
  116.     bb_BevelType : word;
  117.    end;
  118.  
  119.   pimagenode = ^timagenode;
  120.   
  121.   psmallimagenode = ^tsmallimagenode;
  122.   tsmallimagenode = record
  123.     si_Succ        : psmallimagenode;
  124.     si_Pred        : psmallimagenode;
  125.     si_Graphic     : pimagenode;
  126.     si_LeftEdge    : long;
  127.     si_TopEdge     : long;
  128.    end;
  129.   
  130.   pProducerNode = ^tProducerNode;
  131.   tProducerNode = Record
  132.     pn_windowlist  : tminlist;
  133.     pn_menulist    : tminlist;
  134.     pn_imagelist   : tminlist;
  135.     pn_screenlist  : tminlist;
  136.     pn_LocaleList  : tMinList;
  137.     pn_LocaleCount : long;
  138.     pn_basename    : pbyte;
  139.     pn_getstring   : pbyte;
  140.     pn_builtinlanguage  : pbyte;
  141.     pn_localeversion    : long;
  142.     pn_procedureoptions : array [0..49] of boolean;
  143.     pn_codeoptions      : array [0..19] of boolean;
  144.     pn_openlibs         : array [0..29] of boolean;
  145.     pn_versionlibs      : array [0..29] of long;
  146.     pn_abortonfaillibs  : array [0..29] of boolean;
  147.     pn_pn_includes      : pbyte;
  148.    end;
  149.  
  150.   timagenode = record
  151.     in_succ          : pimagenode;
  152.     in_pred          : pimagenode;
  153.     in_label         : pbyte;
  154.     in_Width         : integer;
  155.     in_Height        : integer;
  156.     in_Depth         : integer;
  157.     in_PlanePick     : byte;
  158.     in_PlaneOnOff    : byte;
  159.     in_ImageData     : pbyte;
  160.     in_sizeallocated : long;
  161.     in_colourmap     : pword;
  162.     in_mapsize       : long;
  163.    end;
  164.  
  165.   pdesignermenunode = ^tdesignermenunode;
  166.   tdesignermenunode = record
  167.     mn_succ         : pdesignermenunode;
  168.     mn_pred         : pdesignermenunode;
  169.     mn_menulist     : tminlist;
  170.     mn_label        : pbyte;
  171.     mn_TagList      : ptagitem;
  172.     mn_localemenu   : boolean;
  173.    end;
  174.   
  175.   pmenutitlenode = ^tmenutitlenode;
  176.   tmenutitlenode = record
  177.     mt_succ     : pmenutitlenode;
  178.     mt_pred     : pmenutitlenode;
  179.     mt_itemlist : tminlist;
  180.     mt_text     : pbyte;
  181.     mt_label    : pbyte;
  182.     mt_disabled : boolean;
  183.    end;
  184.   
  185.   pmenuitemnode = ^tmenuitemnode;
  186.   tmenuitemnode = record
  187.     mi_succ       : pmenuitemnode;
  188.     mi_pred       : pmenuitemnode;
  189.     mi_subitems   : tminlist;
  190.     mi_text       : pbyte;
  191.     mi_label      : pbyte;
  192.     mi_graphic    : pimagenode;
  193.     mi_commkey    : byte;
  194.     mi_disabled   : boolean;
  195.     mi_checkit    : boolean;
  196.     mi_menutoggle : boolean;
  197.     mi_checked    : boolean;
  198.     mi_barlabel   : boolean;
  199.     mi_exclude    : long;
  200.    end;
  201.   
  202.   pmenusubitemnode = ^tmenusubitemnode;
  203.   tmenusubitemnode = record
  204.     ms_succ       : pmenusubitemnode;
  205.     ms_pred       : pmenusubitemnode;
  206.     ms_text       : pbyte;
  207.     ms_label      : pbyte;
  208.     ms_graphic    : pimagenode;
  209.     ms_commkey    : byte;
  210.     ms_disabled   : boolean;
  211.     ms_checkit    : boolean;
  212.     ms_menutoggle : boolean;
  213.     ms_checked    : boolean;
  214.     ms_barlabel   : boolean;
  215.     ms_exclude    : long;
  216.    end;
  217.  
  218.   pdesignerscreennode = ^tdesignerscreennode;
  219.   tdesignerscreennode = record
  220.     sn_succ              : pdesignerscreennode;
  221.     sn_prev              : pdesignerscreennode;
  222.     sn_label             : pbyte;
  223.     sn_TagList           : ptagitem;
  224.     sn_localetitle       : boolean;
  225.    end;
  226.  
  227.   pdesignerwindownode = ^tdesignerwindownode;
  228.   tdesignerwindownode = record
  229.     wn_Succ                 : pdesignerwindownode;
  230.     wn_Pred                 : pdesignerwindownode;
  231.     wn_GadgetList           : tminlist;
  232.     wn_TextList             : tminlist;
  233.     wn_ImageList            : tminlist;
  234.     wn_BevelBoxList         : tminlist;
  235.     wn_Label                : pbyte;
  236.     wn_WinParams            : pbyte;
  237.     wn_RendParams           : pbyte;
  238.     wn_TagList              : ptagitem;
  239.     wn_Menu                 : pdesignermenunode;
  240.     wn_localeoptions        : array [0..5 ] of boolean;
  241.     wn_codeoptions          : array [0..19] of boolean;
  242.     wn_extracodeoptions     : array [0..19] of boolean;
  243.     wn_offx                 : word;
  244.     wn_offy                 : word;
  245.     wn_Fontx                : word;
  246.     wn_fonty                : word;
  247.     wn_FirstID              : long;
  248.    end;
  249.  
  250. function sfp(p : pbyte):string;
  251.  
  252. function  GetProducer: pProducerNode;
  253. procedure FreeProducer (pn: pProducerNode);
  254. function  LoadDesignerData
  255.            (pn : pProducerNode;
  256.             FileName: pbyte): longint;
  257.  
  258. procedure FreeDesignerData (pn: pProducerNode);
  259. function  OpenProducerWindow
  260.            (pn : pProducerNode;
  261.             Title: pbyte): boolean;
  262.  
  263. procedure CloseProducerWindow (pn: pProducerNode);
  264. procedure SetProducerWindowFileName
  265.            (pn : pProducerNode;
  266.             name: pbyte);
  267.  
  268. procedure SetProducerWindowAction
  269.            (pn : pProducerNode;
  270.             act: pbyte);
  271.  
  272. procedure SetProducerWindowLineNumber
  273.            (pn: pProducerNode;
  274.             num: longint);
  275.  
  276. function  ProducerWindowUserAbort (pn: pProducerNode): boolean;
  277. function  ProducerWindowWriteMain
  278.            (pn : pProducerNode;
  279.             filename: pbyte): Boolean;
  280.  
  281. function  AddLocaleString
  282.            (pn : pProducerNode;
  283.             str : pbyte;
  284.             labelstring : pbyte;
  285.             commentstring : pbyte): Boolean;
  286.  
  287. procedure FreeLocaleStrings (pn: pProducerNode);
  288. function WriteLocaleCT (pn: pProducerNode): Boolean;
  289. function WriteLocaleCD (pn: pProducerNode): Boolean;
  290.  
  291. var
  292.   ProducerBase: pLibrary;
  293.  
  294. implementation
  295.  
  296. function sfp(p : pbyte):string;  { Take a pointer to a C string and returns a Pascal string }
  297. var
  298.   temp : string;
  299. begin
  300.   temp:='';
  301.   if p<>nil then
  302.     ctopas(p^,temp);
  303.   sfp:=temp;
  304. end;
  305.  
  306. function GetProducer; xassembler;
  307. asm
  308.     movem.l    d4-d5/a6,-(sp)
  309.     move.l    ProducerBase,a6
  310.     jsr        -$1E(a6)
  311.     move.l    d0,$10(sp)
  312.     movem.l    (sp)+,d4-d5/a6
  313. end;
  314.  
  315. procedure FreeProducer; xassembler;
  316. asm
  317.     move.l    a6,-(sp)
  318.     move.l    8(sp),a0
  319.     move.l    ProducerBase,a6
  320.     jsr        -$24(a6)
  321.     move.l    (sp)+,a6
  322. end;
  323.  
  324. function LoadDesignerData; xassembler;
  325. asm
  326.     move.l    a6,-(sp)
  327.     lea        8(sp),a6
  328.     move.l    (a6)+,a1
  329.     move.l    (a6)+,a0
  330.     move.l    ProducerBase,a6
  331.     jsr        -$2A(a6)
  332.     move.l    d0,$10(sp)
  333.     move.l    (sp)+,a6
  334. end;
  335.  
  336. procedure FreeDesignerData; xassembler;
  337. asm
  338.     move.l    a6,-(sp)
  339.     move.l    8(sp),a0
  340.     move.l    ProducerBase,a6
  341.     jsr        -$30(a6)
  342.     move.l    (sp)+,a6
  343. end;
  344.  
  345. function OpenProducerWindow; xassembler;
  346. asm
  347.     move.l    a6,-(sp)
  348.     lea        8(sp),a6
  349.     move.l    (a6)+,a1
  350.     move.l    (a6)+,a0
  351.     move.l    ProducerBase,a6
  352.     jsr        -$36(a6)
  353.     move.l    d0,$10(sp)
  354.     move.l    (sp)+,a6
  355. end;
  356.  
  357. procedure CloseProducerWindow; xassembler;
  358. asm
  359.     move.l    a6,-(sp)
  360.     move.l    8(sp),a0
  361.     move.l    ProducerBase,a6
  362.     jsr        -$3C(a6)
  363.     move.l    (sp)+,a6
  364. end;
  365.  
  366. procedure SetProducerWindowFileName; xassembler;
  367. asm
  368.     move.l    a6,-(sp)
  369.     lea        8(sp),a6
  370.     move.l    (a6)+,a1
  371.     move.l    (a6)+,a0
  372.     move.l    ProducerBase,a6
  373.     jsr        -$42(a6)
  374.     move.l    (sp)+,a6
  375. end;
  376.  
  377. procedure SetProducerWindowAction; xassembler;
  378. asm
  379.     move.l    a6,-(sp)
  380.     lea        8(sp),a6
  381.     move.l    (a6)+,a1
  382.     move.l    (a6)+,a0
  383.     move.l    ProducerBase,a6
  384.     jsr        -$48(a6)
  385.     move.l    (sp)+,a6
  386. end;
  387.  
  388. procedure SetProducerWindowLineNumber; xassembler;
  389. asm
  390.     move.l    a6,-(sp)
  391.     movem.l    8(sp),d0/a0
  392.     move.l    ProducerBase,a6
  393.     jsr        -$4E(a6)
  394.     move.l    (sp)+,a6
  395. end;
  396.  
  397. function ProducerWindowUserAbort; xassembler;
  398. asm
  399.     move.l    a6,-(sp)
  400.     move.l    8(sp),a0
  401.     move.l    ProducerBase,a6
  402.     jsr        -$54(a6)
  403.     move.l    d0,$C(sp)
  404.     move.l    (sp)+,a6
  405. end;
  406.  
  407. function ProducerWindowWriteMain; xassembler;
  408. asm
  409.     move.l    a6,-(sp)
  410.     lea        8(sp),a6
  411.     move.l    (a6)+,a1
  412.     move.l    (a6)+,a0
  413.     move.l    ProducerBase,a6
  414.     jsr        -$5A(a6)
  415.     move.l    d0,$10(sp)
  416.     move.l    (sp)+,a6
  417. end;
  418.  
  419. function AddLocaleString; xassembler;
  420. asm
  421.     move.l    a6,-(sp)
  422.     lea        8(sp),a6
  423.     move.l    (a6)+,d1
  424.     move.l    (a6)+,d0
  425.     move.l    (a6)+,a1
  426.     move.l    (a6)+,a0
  427.     move.l    ProducerBase,a6
  428.     jsr        -$60(a6)
  429.     move.l    d0,$18(sp)
  430.     move.l    (sp)+,a6
  431. end;
  432.  
  433. procedure FreeLocaleStrings; xassembler;
  434. asm
  435.     move.l    a6,-(sp)
  436.     move.l    8(sp),a0
  437.     move.l    ProducerBase,a6
  438.     jsr        -$66(a6)
  439.     move.l    (sp)+,a6
  440. end;
  441.  
  442. function WriteLocaleCT; xassembler;
  443. asm
  444.     move.l    a6,-(sp)
  445.     move.l    8(sp),a0
  446.     move.l    ProducerBase,a6
  447.     jsr        -$6C(a6)
  448.     move.l    d0,$C(sp)
  449.     move.l    (sp)+,a6
  450. end;
  451.  
  452. function WriteLocaleCD; xassembler;
  453. asm
  454.     move.l    a6,-(sp)
  455.     move.l    8(sp),a0
  456.     move.l    ProducerBase,a6
  457.     jsr        -$72(a6)
  458.     move.l    d0,$C(sp)
  459.     move.l    (sp)+,a6
  460. end;
  461.  
  462. end.
  463.